# -*- coding: utf-8 -*-

import pygame, os, datetime, random
from datetime import *
from enemy import *
from pygame.locals import *

class Cenario:
	def __init__(self,fase,som_disponivel=True,jogadores=1,lingua='portugues'):
		self.comeco_de_fase = True
		self.som_disponivel = som_disponivel
		self.fase_concluida = False
		self.fase = fase
		self.tempo_inicial = datetime.now()
		self.tempo_final = datetime.now()
		self.tempo_da_fase = 240
		self.num_jogadores = jogadores
		self.lista_de_bonus = []
		self.lista_de_paredes = []
		self.lista_de_bombas = []
		self.lista_de_destrutiveis = []
		self.imagem_interface = [pygame.image.load('imagens' + os.sep + 'interfaces' + os.sep + 'escuro.png'),
								pygame.image.load('imagens' + os.sep + 'interfaces' + os.sep + 'placar.png'),
								pygame.image.load('imagens' + os.sep + 'interfaces' + os.sep + 'fim_do_jogo.png')]
		self.imagem_topo = [pygame.image.load('imagens' + os.sep + 'fases' + os.sep + fase + os.sep + 'topo1.png'),
							pygame.image.load('imagens' + os.sep + 'fases' + os.sep + fase + os.sep + 'topo2.png')]
		self.imagem_bonus = [pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'bomba.png'),
							pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'dano.png'),
							pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'score.png'),
							pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'tempo.png'),
							pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'velocidade.png'),
							pygame.image.load('imagens' + os.sep + 'bonus' + os.sep + 'vida.png')]
		self.imagem_destrutivel = pygame.image.load('imagens' + os.sep + 'fases' + os.sep + fase + os.sep + 'destrutivel.png')
		self.background = pygame.image.load('imagens' + os.sep + 'fases' + os.sep + fase + os.sep + 'background.png').convert()
		self.imagem_bomba = [pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'bomba1.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'bomba2.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'bomba3.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'bomba4.png')]
		self.imagem_fogo = [pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_centro.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_final_baixo.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_final_cima.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_final_direita.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_final_esquerda.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_horizontal.png'),
							pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomba' + os.sep + 'fogo_vertical.png')]
		if fase == 'cemiterio':
			if self.num_jogadores == 1:
				self.inimigo1 = Enemy(252,546,1,2,150,'Fantasma')
				self.inimigo2 = Enemy(504,126,1,2,100,'Fantasma')
				self.inimigo3 = Enemy(252,210,2,1,200,'Zumbi')
				self.inimigo4 = Enemy(210,294,2,1,250,'Zumbi')
				self.lista_de_inimigos = [self.inimigo1,self.inimigo2,self.inimigo3,self.inimigo4]
			if lingua  ==  'portugues':
				self.fase_nome = u'Portões do Cemitério'
			elif lingua == 'ingles':
				self.fase_nome = 'Cemetery Gates'
			elif lingua == 'frances':
				self.fase_nome = u'Portes du Cimitière'
			self.mapa_de_movimentacao = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,'fix','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','cam','rmv','cam','cam','fix',0],
										[0,'fix','cam','fix','rmv','fix','cam','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','cam','rmv','rmv','cam','cam','cam','cam','rmv','cam','cam','cam','cam','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','rmv','fix','rmv','fix','cam','fix','rmv','fix','cam','fix','cam','fix','rmv','fix',0],
										[0,'fix','rmv','rmv','cam','cam','rmv','cam','rmv','cam','rmv','rmv','cam','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','rmv','fix','rmv','fix','rmv','fix',0],
										[0,'fix','cam','cam','cam','rmv','rmv','cam','cam','cam','rmv','cam','rmv','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','cam','fix','cam','fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','cam','rmv','rmv','rmv','rmv','cam','rmv','cam','cam','rmv','rmv','cam','rmv','cam','cam','fix',0],
										[0,'fix','rmv','fix','rmv','fix','cam','fix','cam','fix','cam','fix','cam','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','rmv','cam','rmv','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','fix',0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
		if fase == 'rancho':
			if self.num_jogadores == 1:
				self.inimigo1 = Enemy(672,546,2,1,250,'Cactus1')
				self.inimigo2 = Enemy(504,126,2,1,200,'Cactus1')
				self.inimigo3 = Enemy(336,252,1,2,150,'Cactus2')
				self.inimigo4 = Enemy(84,462,1,2,150,'Cactus2')
				self.lista_de_inimigos = [self.inimigo1,self.inimigo2,self.inimigo3,self.inimigo4]
			if lingua  ==  'portugues':
				self.fase_nome = 'Rancho da Morte'
			elif lingua == 'ingles':
				self.fase_nome = u'Death´s Ranch'
			elif lingua == 'frances':
				self.fase_nome = 'Le Ranch de La Mort'
			self.mapa_de_movimentacao = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,'fix','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','cam','rmv','cam','cam','fix',0],
										[0,'fix','cam','fix','rmv','fix','cam','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','cam','rmv','rmv','cam','cam','cam','cam','rmv','cam','cam','cam','cam','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','rmv','fix','rmv','fix','cam','fix','rmv','fix','cam','fix','cam','fix','rmv','fix',0],
										[0,'fix','rmv','rmv','cam','cam','rmv','cam','rmv','cam','rmv','cam','rmv','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix',0],
										[0,'fix','cam','cam','cam','rmv','rmv','cam','rmv','rmv','rmv','cam','rmv','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','cam','fix','cam','fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','cam','rmv','rmv','rmv','rmv','cam','rmv','cam','cam','rmv','rmv','cam','rmv','cam','cam','fix',0],
										[0,'fix','rmv','fix','rmv','fix','cam','fix','cam','fix','cam','fix','cam','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','rmv','cam','rmv','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','fix',0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
		if fase == 'ponte':
			if self.num_jogadores == 1:
				self.inimigo1 = Enemy(336,462,1,1,150,'Bandido1')
				self.inimigo2 = Enemy(672,126,2,1,100,'Bandido2')
				self.inimigo3 = Enemy(210,378,1,1,200,'Bandido1')
				self.inimigo4 = Enemy(294,126,2,1,250,'Bandido2')
				self.lista_de_inimigos = [self.inimigo1,self.inimigo2,self.inimigo3,self.inimigo4]
			if lingua  ==  'portugues':
				self.fase_nome = 'Rio Grande'
			elif lingua == 'ingles':
				self.fase_nome = 'Grand River'
			elif lingua == 'frances':
				self.fase_nome = 'Grande River'
			self.mapa_de_movimentacao = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,'fix','cam','cam','cam','cam','cam','cam','cam','cam','cam','cam','rmv','rmv','rmv','rmv','cam','fix',0],
										[0,'fix','cam','rmv','fix','fix','fix','cam','rmv','fix','rmv','fix','cam','fix','cam','fix','cam','fix',0],
										[0,'fix','rmv','rmv','fix','fix','fix','cam','cam','cam','rmv','rmv','rmv','rmv','rmv','cam','cam','fix',0],
										[0,'fix','rmv','rmv','fix','fix','fix','fix','fix','fix','rmv','fix','cam','fix','cam','fix','rmv','fix',0],
										[0,'fix','cam','rmv','fix','fix','fix','fix','fix','fix','cam','cam','rmv','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','cam','rmv','fix','fix','fix','fix','fix','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix',0],
										[0,'fix','cam','rmv','cam','cam','cam','fix','fix','fix','rmv','rmv','rmv','cam','cam','cam','cam','fix',0],
										[0,'fix','rmv','fix','cam','fix','cam','fix','fix','fix','cam','fix','cam','fix','cam','fix','cam','fix',0],
										[0,'fix','cam','rmv','rmv','rmv','rmv','cam','cam','cam','cam','rmv','rmv','rmv','rmv','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','rmv','fix','rmv','fix','fix','fix','cam','fix','rmv','fix','cam','fix','cam','fix',0],
										[0,'fix','cam','rmv','rmv','rmv','cam','fix','fix','fix','rmv','rmv','cam','cam','rmv','cam','cam','fix',0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]			
		if fase == 'cidade':
			self.inimigo1 = Enemy(252,546,1,1,150,'Bandido3')
			self.inimigo2 = Enemy(504,126,1,1,100,'Bandido3')
			self.inimigo3 = Enemy(252,210,2,1,200,'Bandido4')
			self.inimigo4 = Enemy(210,294,2,1,250,'Bandido4')
			self.lista_de_inimigos = [self.inimigo1,self.inimigo2,self.inimigo3,self.inimigo4]
			if lingua  ==  'portugues':
				self.fase_nome = 'Terra Sem Lei'
			elif lingua == 'ingles':
				self.fase_nome = 'Lawless Land'
			elif lingua == 'frances':
				self.fase_nome = 'Terre Sans Foi ni Loi'
			self.mapa_de_movimentacao = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,'fix','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','cam','rmv','cam','cam','fix',0],
										[0,'fix','cam','fix','rmv','fix','cam','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','cam','rmv','rmv','cam','cam','cam','cam','rmv','cam','cam','cam','cam','rmv','rmv','fix',0],
										[0,'fix','rmv','fix','rmv','fix','rmv','fix','rmv','fix','fix','fix','cam','rmv','fix','fix','rmv','fix',0],
										[0,'fix','rmv','rmv','cam','cam','rmv','cam','rmv','fix','fix','fix','cam','cam','rmv','cam','rmv','fix',0],
										[0,'fix','rmv','fix','cam','fix','rmv','fix','cam','fix','fix','fix','rmv','fix','fix','cam','rmv','fix',0],
										[0,'fix','cam','cam','cam','rmv','rmv','cam','cam','cam','rmv','cam','rmv','cam','rmv','rmv','rmv','fix',0],
										[0,'fix','cam','fix','cam','fix','rmv','fix','cam','fix','rmv','fix','rmv','fix','rmv','fix','cam','fix',0],
										[0,'fix','cam','rmv','rmv','rmv','rmv','cam','rmv','cam','cam','rmv','rmv','cam','rmv','cam','cam','fix',0],
										[0,'fix','rmv','fix','rmv','fix','cam','fix','cam','fix','cam','fix','cam','fix','rmv','fix','cam','fix',0],
										[0,'fix','rmv','rmv','cam','rmv','cam','cam','rmv','cam','cam','rmv','rmv','rmv','rmv','cam','cam','fix',0],
										[0,'fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix','fix',0],
										[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
		for y in range(15):
			for x in range(18):
				if self.mapa_de_movimentacao[y][x] == 'fix':
					self.lista_de_paredes.append(pygame.Rect(x*42,y*42,42,42))
				if self.mapa_de_movimentacao[y][x] == 'rmv':
					self.lista_de_destrutiveis.append(pygame.Rect(x*42,y*42,42,42))	

	def colisao_de_movimento(self,dx,dy,player):
		if self.num_jogadores == 1:
			for inimigo in self.lista_de_inimigos:
				if player.rect.colliderect(inimigo.rect) and player.status == 'VIVO':
					player.status = 'MORTO'
					player.hora_da_morte = datetime.now()
					self.__emitir_som('PLAYER MORRENDO')
					player.contador_para_mudar_sprite = 0
		for destrutivel in self.lista_de_destrutiveis:
			if player.rect.colliderect(destrutivel):
				if dx > 0:
					player.rect.right = destrutivel.left
				if dx < 0:
					player.rect.left = destrutivel.right
				if dy > 0:
					player.rect.bottom = destrutivel.top
				if dy < 0:
					player.rect.top = destrutivel.bottom
		for parede in self.lista_de_paredes:
			if player.rect.colliderect(parede):
				if dx > 0:
					player.rect.right = parede.left
				if dx < 0:
					player.rect.left = parede.right
				if dy > 0:
					player.rect.bottom = parede.top
				if dy < 0:
					player.rect.top = parede.bottom
		for bomba in self.lista_de_bombas:
			if player.rect.colliderect(bomba.rect):
				if (bomba.rect.x-26 <= player.rect.x <= bomba.rect.x+26):
					pass
				else:
					if player.rect.x > bomba.rect.x:
						player.rect.right = player.rect.right+player.velocidade
					elif player.rect.x < bomba.rect.x:
						player.rect.right = player.rect.right-player.velocidade
				if (bomba.rect.y-26 <= player.rect.y <= bomba.rect.y+26):
					pass
				else:
					if player.rect.y > bomba.rect.y:
						player.rect.bottom = player.rect.bottom+player.velocidade
					elif player.rect.y < bomba.rect.y:
						player.rect.top = player.rect.top-player.velocidade
		for tupla_bonus in self.lista_de_bonus:
			bonus_rect = tupla_bonus[0]
			tipo_bonus = tupla_bonus[1]
			if player.rect.colliderect(bonus_rect):
					if tipo_bonus == 'bomba':
						player.quantidade_de_bombas += 1
					if tipo_bonus == 'dano':
						player.alcance_da_bomba += 1
					if tipo_bonus == 'score':
						player.score += 100
					if tipo_bonus == 'tempo':
						self.tempo_da_fase += 15
					if tipo_bonus == 'velocidade':
						player.velocidade += 1
					if tipo_bonus == 'vida':
						player.vidas += 1
					if self.mapa_de_movimentacao[int(bonus_rect.y/42)][int(bonus_rect.x/42)] <> 'cam':
						self.__emitir_som('PEGA_ITEM')
					self.mapa_de_movimentacao[int(bonus_rect.y/42)][int(bonus_rect.x/42)] = 'cam'
					self.lista_de_bonus.remove(tupla_bonus)
	def desenha_itens(self,tela,lista_de_players):
###### verificar se o tempo do bonus superou ######
		for tupla_bonus in reversed(self.lista_de_bonus):
			bonus_rect = tupla_bonus[0]
			tempo_bonus = tupla_bonus[2]
			tempo_agora = datetime.now()
			if (tempo_agora - tempo_bonus).seconds >= 5:
				self.mapa_de_movimentacao[int(bonus_rect.y/42)][int(bonus_rect.x/42)] = 'cam'
				self.lista_de_bonus.remove(tupla_bonus)
		for bomba in reversed(self.lista_de_bombas):
			bomba.processo()
###### quando a bomba explodir por completo, remover o fogo que ela produziu ######
			if bomba.status == 'EXPLODIU':
				for fogo in reversed(bomba.lista_de_fogo):
 					self.mapa_de_movimentacao[int(fogo.y/42)][int(fogo.x/42)] = 'cam'
				for player in lista_de_players:
					if bomba.rect in player.lista_de_bombas_do_player:
						player.quantidade_de_bombas += 1
						player.lista_de_bombas_do_player.remove(bomba.rect)
						self.mapa_de_movimentacao[int(bomba.rect.y/42)][int(bomba.rect.x/42)] = 'cam'
###### distribuir possiveis brindes ######						
				for tupla_bonus in self.lista_de_bonus:
					bonus_rect = tupla_bonus[0]
					tipo_bonus = tupla_bonus[1]
					self.mapa_de_movimentacao[int(bonus_rect.y/42)][int(bonus_rect.x/42)] = tipo_bonus
				self.lista_de_bombas.remove(bomba)
			if bomba.status == 'ATIVADA':
				if (datetime.now() - bomba.tempo_inicial).seconds == 0:
					self.mapa_de_movimentacao[(bomba.rect.y/42)][bomba.rect.x/42] = 'B2'
				elif (datetime.now() - bomba.tempo_inicial).seconds == 1:
					self.mapa_de_movimentacao[(bomba.rect.y/42)][bomba.rect.x/42] = 'B3'
				elif (datetime.now() - bomba.tempo_inicial).seconds == 2:
					self.mapa_de_movimentacao[(bomba.rect.y/42)][bomba.rect.x/42] = 'B4'
			if bomba.status == 'EXPLODINDO':
				if self.mapa_de_movimentacao[(bomba.rect.y/42)][bomba.rect.x/42] <> 'fc':
					self.__emitir_som('BOMBA_EXPLODINDO')
				self.mapa_de_movimentacao[(bomba.rect.y/42)][bomba.rect.x/42] = 'fc'
				if (pygame.Rect(bomba.rect.y,bomba.rect.x,42,42)) not in bomba.lista_de_fogo:
					bomba.lista_de_fogo.append(pygame.Rect(bomba.rect.x,bomba.rect.y,42,42))
				for alcance in range(1,bomba.alcance+1):
					if bomba.fogo_cima:
						if self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'cam' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'rmv' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'B1' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'B2' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'B3' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'B4' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'bomba' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'dano' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'score' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'tempo' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'velocidade' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'vida':
							bomba.lista_de_fogo.append(pygame.Rect(bomba.rect.x,((bomba.rect.y/42)-alcance)*42,42,42))
							if self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'bomba' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'dano' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'score' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'tempo' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'velocidade' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'vida':
								for tupla in reversed(self.lista_de_bonus):
									if pygame.Rect(bomba.rect.x,((bomba.rect.y/42)-alcance)*42,42,42) in tupla:
										self.lista_de_bonus.remove(tupla)
							if self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'rmv':
								self.lista_de_destrutiveis.remove(pygame.Rect(bomba.rect.x,((bomba.rect.y/42)-alcance)*42,42,42))
								bonus = self.__define_bonus()
								if bonus <> False:
									self.lista_de_bonus.append((pygame.Rect(bomba.rect.x,((bomba.rect.y/42)-alcance)*42,42,42),bonus,datetime.now()))
								bomba.fogo_cima = False
							self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] = 'fv'
							if alcance == bomba.alcance:
								self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] = 'ffc'
								bomba.fogo_cima = False
						elif self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'fv' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'ffb' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'ffc':
							self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] = 'fv'
						elif self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'fh' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'ffd' or self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] == 'ffe':
							self.mapa_de_movimentacao[(bomba.rect.y/42)-alcance][bomba.rect.x/42] = 'fc'
						else:
							bomba.fogo_cima = False
					if bomba.fogo_direita:
						if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'cam' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'rmv' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'B1' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'B2' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'B3' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'B4' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'bomba' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'dano' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'score' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'tempo' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'velocidade' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'vida':
							bomba.lista_de_fogo.append(pygame.Rect(((bomba.rect.x/42)+alcance)*42,bomba.rect.y,42,42))
							if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'bomba' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'dano' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'score' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'tempo' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'velocidade' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'vida':
								for tupla in reversed(self.lista_de_bonus):
									if pygame.Rect(((bomba.rect.x/42)+alcance)*42,bomba.rect.y,42,42) in tupla:
										self.lista_de_bonus.remove(tupla)
							if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'rmv':
								self.lista_de_destrutiveis.remove(pygame.Rect(((bomba.rect.x/42)+alcance)*42,bomba.rect.y,42,42))
								bonus = self.__define_bonus()
								if bonus <> False:
									self.lista_de_bonus.append((pygame.Rect(((bomba.rect.x/42)+alcance)*42,bomba.rect.y,42,42),bonus,datetime.now()))
								bomba.fogo_direita = False
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] = 'fh'
							if alcance == bomba.alcance:
								self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] = 'ffd'
								bomba.fogo_direita = False
						elif self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'fh' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'ffd' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'ffe':
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] = 'fh'
						elif self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'fv' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'ffb' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] == 'ffc':
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)+alcance] = 'fc'
						else:
							bomba.fogo_direita = False
					if bomba.fogo_baixo:
						if self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'cam' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'rmv' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'B1' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'B2' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'B3' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'B4' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'bomba' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'dano' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'score' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'tempo' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'velocidade' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'vida':
							bomba.lista_de_fogo.append(pygame.Rect(bomba.rect.x,((bomba.rect.y/42)+alcance)*42,42,42))
							if self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'bomba' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'dano' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'score' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'tempo' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'velocidade' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'vida':
								for tupla in reversed(self.lista_de_bonus):
									if pygame.Rect(bomba.rect.x,((bomba.rect.y/42)+alcance)*42,42,42) in tupla:
										self.lista_de_bonus.remove(tupla)
							if self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'rmv':
								self.lista_de_destrutiveis.remove(pygame.Rect(bomba.rect.x,((bomba.rect.y/42)+alcance)*42,42,42))
								bonus = self.__define_bonus()
								if bonus <> False:
									self.lista_de_bonus.append((pygame.Rect(bomba.rect.x,((bomba.rect.y/42)+alcance)*42,42,42),bonus,datetime.now()))
								bomba.fogo_baixo = False
							self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] = 'fv'
							if alcance == bomba.alcance:
								self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] = 'ffb'
								bomba.fogo_baixo = False
						elif self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'fv' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'ffb' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'ffc':
							self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] = 'fv'
						elif self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'fh' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'ffd' or self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] == 'ffe':
							self.mapa_de_movimentacao[(bomba.rect.y/42)+alcance][bomba.rect.x/42] = 'fc'
						else:
							bomba.fogo_baixo = False
					if bomba.fogo_esquerda:
						if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'cam' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'rmv' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'B1' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'B2' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'B3' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'B4' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'bomba' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'dano' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'score' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'tempo' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'velocidade' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'vida':
							bomba.lista_de_fogo.append(pygame.Rect(((bomba.rect.x/42)-alcance)*42,bomba.rect.y,42,42))
							if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'bomba' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'dano' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'score' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'tempo' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'velocidade' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'vida':
								for tupla in reversed(self.lista_de_bonus):
									if pygame.Rect(((bomba.rect.x/42)-alcance)*42,bomba.rect.y,42,42) in tupla:
										self.lista_de_bonus.remove(tupla)
							if self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'rmv':
								self.lista_de_destrutiveis.remove(pygame.Rect(((bomba.rect.x/42)-alcance)*42,bomba.rect.y,42,42))
								bonus = self.__define_bonus()
								if bonus <> False:
									self.lista_de_bonus.append((pygame.Rect(((bomba.rect.x/42)-alcance)*42,bomba.rect.y,42,42),bonus,datetime.now()))
								bomba.fogo_esquerda = False
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] = 'fh'
							if alcance == bomba.alcance:
								self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] = 'ffe'
								bomba.fogo_esquerda = False
						elif self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'fh' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'ffd' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'ffe':
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] = 'fh'
						elif self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'fv' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'ffb' or self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] == 'ffc': 
							self.mapa_de_movimentacao[bomba.rect.y/42][(bomba.rect.x/42)-alcance] = 'fc'
						else:
							bomba.fogo_esquerda = False			
					
###### colisao com outra bomba ######
			for fogo in bomba.lista_de_fogo:
				for outra_bomba in self.lista_de_bombas:
					if fogo.colliderect(outra_bomba.rect):
						outra_bomba.status = 'EXPLODINDO'
						outra_bomba.tempo_inicial = bomba.tempo_inicial
				if self.num_jogadores == 1:
					for inimigo in self.lista_de_inimigos:
						if fogo.colliderect(inimigo.rect): 
							if inimigo.status == 'VIVO':
								inimigo.vidas -= 1
								inimigo.status = 'MORTO'
								inimigo.tempo_morto = datetime.now()
								inimigo.contatador_para_mudar_sprite = 0
								if inimigo.vidas == 0:
									self.__emitir_som('INIMIGO MORRENDO')
							else:
								inimigo.contatador_para_mudar_sprite = 0

###### blitar imagens na tela ######
		for y in range(15):
			for x in range(18):
				if self.mapa_de_movimentacao[y][x] == 'bomba':
					tela.blit(self.imagem_bonus[0],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'dano':
					tela.blit(self.imagem_bonus[1],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'score':
					tela.blit(self.imagem_bonus[2],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'tempo':
					tela.blit(self.imagem_bonus[3],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'velocidade':
					tela.blit(self.imagem_bonus[4],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'vida':
					tela.blit(self.imagem_bonus[5],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'rmv':
					tela.blit(self.imagem_destrutivel,(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'B1':
					tela.blit(self.imagem_bomba[0],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'B2':
					tela.blit(self.imagem_bomba[1],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'B3':
					tela.blit(self.imagem_bomba[2],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'B4':
					tela.blit(self.imagem_bomba[3],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'fc':
					tela.blit(self.imagem_fogo[0],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'ffb':
					tela.blit(self.imagem_fogo[1],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'ffc':
					tela.blit(self.imagem_fogo[2],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'ffd':
					tela.blit(self.imagem_fogo[3],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'ffe':
					tela.blit(self.imagem_fogo[4],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'fh':
					tela.blit(self.imagem_fogo[5],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'fv':
					tela.blit(self.imagem_fogo[6],(x*42,y*42))
				if self.mapa_de_movimentacao[y][x] == 'bonus':
					tela.blit(self.imagem_destrutivel,(x*42,y*42))
###### so coloca os inimigos se o jogo for single player ######
		if self.num_jogadores == 1 and self.tempo_da_fase > 0:
			player = lista_de_players[0]
			self.__desenhar_inimigos(tela,self.lista_de_inimigos,player)
		self.__desenha_informacoes(tela,lista_de_players)			
	def colisao_estatica(self,player):
		if player.status == 'MORTO':
			player.contador_para_mudar_sprite += 1
			if player.contador_para_mudar_sprite < 8:
				player.player_imagem = pygame.image.load(player.imagem_morte[0])
			elif player.contador_para_mudar_sprite <= 16:
				player.player_imagem = pygame.image.load(player.imagem_morte[1])
			elif player.contador_para_mudar_sprite <= 24:
				player.player_imagem = pygame.image.load(player.imagem_morte[2])
			elif player.contador_para_mudar_sprite <= 32:
				player.player_imagem = pygame.image.load(player.imagem_morte[3])				
			if (datetime.now() - player.hora_da_morte).seconds >= 1 and player.vidas > 0: 
				if self.num_jogadores == 1:
					for y in range(15):
						for x in range(18):
							if self.mapa_de_movimentacao[y][x] <> 'fix' and self.mapa_de_movimentacao[y][x] <> 'rmv':
								self.mapa_de_movimentacao[y][x] = 'cam'
					self.lista_de_bonus = []
					player.vidas -= 1
					if player.vidas > 0:
						if self.num_jogadores == 1:
							for inimigo in self.lista_de_inimigos:
								inimigo.rect.x = inimigo.dx
								inimigo.rect.y = inimigo.dy
						player.rect.x = player.dx
						player.rect.y = player.dy
						player.quantidade_de_bombas = 1
						player.alcance_da_bomba = 1
						player.velocidade = 2
						player.status = 'VIVO'
						player.player_imagem = pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomber' + os.sep + player.tipo + os.sep + 'baixo4.png')
				if self.num_jogadores == 2:
					for y in range(15):
						for x in range(18):
							if self.mapa_de_movimentacao[y][x] <> 'fix' and self.mapa_de_movimentacao[y][x] <> 'rmv' and self.mapa_de_movimentacao[y][x] <> 'vida' and self.mapa_de_movimentacao[y][x] <> 'bomba' and self.mapa_de_movimentacao[y][x] <> 'dano' and self.mapa_de_movimentacao[y][x] <> 'velocidade':
								self.mapa_de_movimentacao[y][x] = 'cam'
					player.vidas -= 1
					if player.vidas > 0:
						if self.num_jogadores == 1:
							for inimigo in self.lista_de_inimigos:
								inimigo.rect.x = inimigo.dx
								inimigo.rect.y = inimigo.dy
						player.rect.x = player.dx
						player.rect.y = player.dy
						player.quantidade_de_bombas = 1
						player.alcance_da_bomba = 1
						player.velocidade = 2
						player.status = 'VIVO'
						player.player_imagem = pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'bomber' + os.sep + player.tipo + os.sep + 'baixo4.png')
			else:
				player.lista_de_bombas = []
		else:
			for bomba in self.lista_de_bombas:
				for fogo in bomba.lista_de_fogo:
					if player.rect.colliderect(fogo) and player.status == 'VIVO':
						player.status = 'MORTO'
						player.hora_da_morte = datetime.now()
						player.contador_para_mudar_sprite = 0
						self.__emitir_som('PLAYER MORRENDO')
	def __define_bonus(self):
		chance = random.randint(0,100)
		if self.num_jogadores == 1:
			tipos_de_bonus = ['bomba','dano','score','tempo','velocidade','vida']
			if 0 < chance < 20:
				indice = random.randint(0,len(tipos_de_bonus)-1)
				return tipos_de_bonus[indice]
		else:
			tipos_de_bonus = ['bomba','dano','velocidade','vida']
			if 0 < chance < 30:
				indice = random.randint(0,len(tipos_de_bonus)-1)
				return tipos_de_bonus[indice]
		return False

	def __desenhar_inimigos(self,tela,lista_de_inimigos,player):
		if len(lista_de_inimigos) == 0:
			if (datetime.now() - self.tempo_final).seconds >= 3 and self.fase_concluida == False:
				self.fase_concluida = True
				player.score += self.tempo_da_fase*20
		else:
			for inimigo in reversed(lista_de_inimigos):
				if inimigo.rect.colliderect(player.rect) and player.status == 'VIVO':
					player.status = 'MORTO'
					player.hora_da_morte = datetime.now()
					self.__emitir_som('PLAYER MORRENDO')
					player.contador_para_mudar_sprite = 0
				if inimigo.vidas > 0 and (datetime.now() - inimigo.tempo_morto).seconds >= 2:
					inimigo.status = 'VIVO'
				if inimigo.vidas == 0:
					if inimigo.contador_para_mudar_sprite <= 8:
						inimigo.inimigo_imagem = pygame.image.load(inimigo.imagem_morte[0])
					elif inimigo.contador_para_mudar_sprite <= 16:
						inimigo.inimigo_imagem = pygame.image.load(inimigo.imagem_morte[1])
					elif inimigo.contador_para_mudar_sprite <= 24:
						inimigo.inimigo_imagem = pygame.image.load(inimigo.imagem_morte[2])
					elif inimigo.contador_para_mudar_sprite <= 32:
						inimigo.inimigo_imagem = pygame.image.load(inimigo.imagem_morte[3])				
					inimigo.contador_para_mudar_sprite += 1	
				if (datetime.now() - inimigo.tempo_morto).seconds >= 1 and inimigo.vidas == 0:
					inimigo.contador_para_mudar_sprite = 0
					lista_de_inimigos.remove(inimigo)
					player.score += inimigo.score
					if len(lista_de_inimigos) == 0:
						pygame.mixer.music.stop()
						self.__emitir_som('PLAYER GANHANDO')
						self.tempo_final = datetime.now()
				if inimigo.status == 'VIVO' and player.vidas > 0:
					inimigo.move(self.mapa_de_movimentacao)
				tela.blit(inimigo.inimigo_imagem,(inimigo.rect.x,inimigo.rect.y-29))

	def __emitir_som(self,tipo):
		if self.som_disponivel:
			som_explosao = pygame.mixer.Sound('sounds' + os.sep + 'explosao.ogg')
			som_pega_item = pygame.mixer.Sound('sounds' + os.sep + 'pega_item.ogg')
			som_cai_item = pygame.mixer.Sound('sounds' + os.sep + 'cai_item.ogg')
			som_player_vitoria = pygame.mixer.Sound('sounds' + os.sep + 'player_vitoria.ogg')
			som_player_morte = pygame.mixer.Sound('sounds' + os.sep + 'player_morte.ogg')
			som_player_vitoria = pygame.mixer.Sound('sounds' + os.sep + 'player_vitoria.ogg')
			som_inimigo_morte = pygame.mixer.Sound('sounds' + os.sep + 'inimigo_morte.ogg')
			som_cenario_acabando = pygame.mixer.Sound('sounds' + os.sep + 'cenario_acabando.ogg')
			if tipo == 'BOMBA_EXPLODINDO':
				som_explosao.play()
			if tipo == 'PEGA_ITEM':
				som_pega_item.play()
			if tipo == 'PLAYER MORRENDO':
				som_player_morte.play()
			if tipo == 'INIMIGO MORRENDO':
				som_inimigo_morte.play()
			if tipo == 'PLAYER GANHANDO':
				som_player_vitoria.play()
			if tipo == 'CENARIO ACABANDO':
				som_cenario_acabando.play()
		else:
			return
	def __desenha_informacoes(self,screen,lista):
		if self.fase == 'cemiterio' or self.fase == 'ponte':
			cor_letra = (0,0,0)
			cor_tempo = (0,0,0)
		else:
			cor_letra = (255,255,0)
			cor_tempo = (255,255,0)
		if self.num_jogadores == 1:
			fonte  = pygame.font.Font('fontes' + os.sep + 'Rosewood.otf',35)
			if self.tempo_da_fase < 30:
				cor_tempo = (255,0,0)
			if (datetime.now() - self.tempo_inicial).seconds >=1 and self.tempo_da_fase > 0 and lista[0].vidas > 0 and len(self.lista_de_inimigos) <> 0:
				if self.tempo_da_fase == 3:
					self.__emitir_som('CENARIO ACABANDO')
				self.tempo_da_fase -= 1
				self.tempo_inicial = datetime.now()
			screen.blit(self.imagem_topo[0],(75,28))
			screen.blit(fonte.render(str("%02d" % lista[0].vidas),True,cor_letra),(150,50))
			screen.blit(fonte.render(str("%010d" % lista[0].score),True,cor_letra),(310,50))
			screen.blit(fonte.render(str(self.__formatar_tempo(self.tempo_da_fase)),True,cor_tempo),(620,50))
		else:
			screen.blit(self.imagem_topo[1],(75,28))
			fonte  = pygame.font.Font('fontes' + os.sep + 'Rosewood.otf',35)
			cor = (255,255,0)
			screen.blit(fonte.render(str("%02d" % lista[0].vidas),True,cor),(150,50))
			screen.blit(fonte.render(str("%02d" % lista[1].vidas),True,cor),(612,50))
	def __formatar_tempo(self,tempo):
		minutos = '%02d' % int(tempo/60)
		segundos = '%02.0f' % float(((float(tempo)/60) - tempo/60)*60)
		return str(minutos ) + ':' + str(segundos)
	def proxima_fase(self,player):
		player.rect.x = player.dx
		player.rect.y = player.dy
		self.lista_de_inimigos = []
		self.lista_de_bonus = []
		player.lista_de_bombas_do_player = []
		player.quantidade_de_bombas = 1
		player.alcance_da_bomba = 1
		if self.fase == 'ponte':
			return 'rancho'
		elif self.fase == 'rancho':
			return 'cemiterio'
		elif self.fase == 'cemiterio':
			return 'cidade'
		else:
			return 'fim'
	def game_over(self,screen,lingua):
		if lingua == 'portugues':
			palavra = 'Fim do Jogo'
		elif lingua == 'ingles':
			palavra = 'Game Over'
		elif lingua == 'frances':
			palavra = 'Fin de Jeu'
		screen.blit(self.imagem_interface[0],(0,0))
		dx_center_background = self.background.get_rect().centerx
		dy_center_background = self.background.get_rect().centery
		fonte  = pygame.font.Font('fontes' + os.sep + 'Edmunds.ttf',50)
		tamanho_palavra = fonte.render(palavra,True,(255,255,255)).get_rect().size
		coordenada = (dx_center_background - tamanho_palavra[0]/2,dy_center_background - tamanho_palavra[1]/2)
		screen.blit(fonte.render(palavra,True,(255,255,255)),coordenada)
		pygame.mixer.music.stop()
		pygame.display.update()
	def fim_do_jogo(self,screen,lingua,player):
		if lingua == 'portugues':
			parabens = u'Parabéns,' 
			parabens2 = u'você completou o jogo.'
			score = u'Sua Pontuação:'
			desenvolvimento = 'Desenvolvido por:'
		elif lingua == 'ingles':
			parabens = 'Congratulations,' 
			parabens2 = 'you have completed the game.'
			score = 'You Score:'
			desenvolvimento = 'Developed by:'
		elif lingua == 'frances':
			parabens = u'Félicitations,' 
			parabens2 = u'vous avez terminé le jeu.'
			score = 'Votre Score:'
			desenvolvimento = u'Développé par:'
		screen.blit(self.imagem_interface[2],(0,0))
		fonte  = pygame.font.Font('fontes' + os.sep + 'Edmunds.ttf',30)
		fonte2  = pygame.font.Font('fontes' + os.sep + 'Edmunds.ttf',20)
		screen.blit(fonte.render(parabens,True,(255,255,255)),(290,260))
		screen.blit(fonte2.render(parabens2,True,(255,255,255)),(350,290))
		screen.blit(fonte2.render(score,True,(255,255,255)),(290,320))
		screen.blit(fonte2.render(str(player.score),True,(255,255,255)),(440,320))
		screen.blit(fonte2.render(desenvolvimento,True,(255,255,255)),(350,360))
		screen.blit(fonte2.render('Gilles Medeiros Henriques',True,(255,255,255)),(400,390))
		screen.blit(fonte2.render('Joeumar Souza',True,(255,255,255)),(510,410))
		rodando = True
		pygame.display.update()
		while rodando:
			for event in pygame.event.get():
				if event.type == KEYDOWN and event.key == K_RETURN:
					rodando = False
			
